package com.glsc.ngateway.common.base.converter.flowable;

import com.glsc.ngateway.common.api.flowable.dto.demand.FlowableAppendDto;
import com.glsc.ngateway.common.base.domain.mysql.flowable.FlowableAppend;
import org.springframework.lang.Nullable;
import org.springframework.util.CollectionUtils;

import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

public class FlowableAppendConverter {
    @Nullable
    public static FlowableAppend dto2Domain(FlowableAppendDto dto) {
        return Objects.isNull(dto) ? null : FlowableAppend.builder()
                .id(dto.getId())
                .appendixId(dto.getAppendixId())
                .appendixPath(dto.getAppendixPath())
                .appendixName(dto.getAppendixName())
                .opTime(dto.getOpTime())
                .build();
    }

    @Nullable
    public static List<FlowableAppend> dto2Domain(List<FlowableAppendDto> dto) {
        return CollectionUtils.isEmpty(dto) ? null: dto.stream().map(FlowableAppendConverter::dto2Domain).collect(Collectors.toList());
    }

    @Nullable
    public static FlowableAppendDto domain2Dto(FlowableAppend domain) {
        return Objects.isNull(domain) ? null : FlowableAppendDto.builder()
                .id(domain.getId())
                .appendixId(domain.getAppendixId())
                .appendixPath(domain.getAppendixPath())
                .appendixName(domain.getAppendixName())
                .opTime(domain.getOpTime())
                .build();
    }

    @Nullable
    public static List<FlowableAppendDto> domain2Dto(List<FlowableAppend> domain) {
        return CollectionUtils.isEmpty(domain) ? null: domain.stream().map(FlowableAppendConverter::domain2Dto).collect(Collectors.toList());
    }
}
